/*************************************************************************
	> File Name: 001.preOrder_midOrder.cpp
	> Author: Maureen 
	> Mail: Maureen@qq.com 
	> Created Time: 四  6/24 18:27:11 2021
 ************************************************************************/

#include <iostream>
using namespace std;

//根据先序遍历+中序遍历，输出后序遍历

char pre[105], mid[105];

void func(int prel, int prer, int midl, int midr) {
    if (prel > prer) {
        return ;
    }
    if (prel == prer) {
        cout << pre[prel];
        return ;
    }
    char root = pre[prel]; //根节点为先序遍历的起始位置
    int ind = midl;
    while (mid[ind] != root) { //查找中序遍历中根节点的位置
        ind++;
    }
    func(prel + 1, prel + ind - midl, midl, ind - 1); //递归左子树
    func(prel + ind - midl + 1, prer, ind + 1, midr); //递归右子树
    cout << root;
}

int main() {
    cin >> pre >> mid;
    //需要知道先序遍历的下标起始和终止位置，中序遍历的起始和终止位置
    func(0, strlen(pre) - 1, 0, strlen(mid) - 1);
    cout << endl;
    return 0;
}

/**
 * TestCase1:
 * ABVZCG (先序)
 * VBZCAG (中序)
 * VCZBGA (后序)
 *
 *
 * TestCase2:
 * AWNPZIVKHTRYOJFX
 * PZINKVWTHRAJOYFX
 * IZPKVNTRHWJOXFYA
 */
